﻿/*************************************
 * Creator:SunnyPaine
 * DateTime:2022/8/22 15:21:52
 * Description:<Description>
 * CopyRight:
 * ***********************************/

using System;
using System.Collections.Generic;

namespace SunnyPaine.Autofac.Extension.Stereotype.Entities
{
    /// <summary>
    /// 实例信息。
    /// </summary>
    public class InstanceInfo
    {
        /// <summary>
        /// 名称。
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 实现的类型。
        /// </summary>
        public Type ImplementType { get; set; }

        /// <summary>
        /// 优先级。
        /// </summary>
        public uint Sort { get; set; } = int.MaxValue;

        /// <summary>
        /// 被创建的实例。
        /// </summary>
        public object Instance { get; set; }

        /// <summary>
        /// 实现的类型继承或派生的类型，通常为接口。
        /// </summary>
        public List<Type> InterfaceTypes { get; set; }

        /// <summary>
        /// 组件的类型。
        /// </summary>
        public ComponentType ComponentType { get; set; }

        /// <summary>
        /// 是否单例。
        /// </summary>
        public bool Single { get; set; }

        /// <summary>
        /// 使用默认的参数创建 <see cref="InstanceInfo"/> 的实例。
        /// </summary>
        public InstanceInfo()
        {
            this.InterfaceTypes = new List<Type>();
        }
    }
}
